package com.biwin.core.main.property;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * BiWin framework Login properties
 *
 * @author biwin
 * @since 0.0.1
 */
@Configuration
@ConfigurationProperties("biwin.login")
public class BiWinLoginProperties {

    /**
     * 默认的登录用户名 属性定义名称
     * <p>
     * 用作项目自定义提交认证的用户名 属性名定义
     */
    private String username = "username";

    /**
     * 默认的登录用户密码 属性定义名称
     * <p>
     * 用作项目自定义提交认证的用户密码 属性名定义
     */
    private String password = "password";

    /**
     * 默认的验证码 属性定义名称
     * <p>
     * 用作项目自定义提交认证的验证 属性名定义
     */
    private String captcha = "captcha";

    /**
     * 登录验证请求地址
     * <p>
     * 默认直接使用spring提供的登录请求地址,该地址可配可不配"/"
     */
    private String customLoginUrl = "/login";

    /**
     * 登出请求地址
     * <p>
     * 默认直接使用spring提供的登出请求地址, 该地址可配可不配"/"
     */
    private String customLogoutUrl = "/logout";

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getCaptcha() {
        return captcha;
    }

    public void setCaptcha(String captcha) {
        this.captcha = captcha;
    }

    public String getCustomLoginUrl() {
        return customLoginUrl;
    }

    public void setCustomLoginUrl(String loginUrl) {
        this.customLoginUrl = parseUrl(loginUrl);
    }

    public String getCustomLogoutUrl() {
        return customLogoutUrl;
    }

    public void setCustomLogoutUrl(String logoutUrl) {
        this.customLogoutUrl = parseUrl(logoutUrl);
    }

    private String parseUrl(String url) {
        if (!url.startsWith("/")) {
            url = "/" + url;
        } else {
            url = url.replaceFirst("[/]+", "/");
        }
        return url;
    }
}
